import { defineStore } from 'pinia';
import { ref } from 'vue';

// 告警项目接口（直接使用后端返回的数据结构）
interface AlarmItem {
  id: string;
  location: string;
  monitorDeviceId: string;
  monitorDeviceName: string;
  alertTime: string;
  alertConfirmTime?: string; // 接警时间（可选字段）
  alertStatus: string;
  isRejected: boolean;
}

export const useAlarmStore = defineStore('alarm', () => {
  const alarmList = ref<AlarmItem[]>([]);

  // 设置告警列表（用于HTTP请求获取）
  const setAlarmList = (list: any[]) => {
    alarmList.value = list;
  };

  // 处理WebSocket实时告警推送
  const handleRealtimeAlarm = (data: any) => {
    console.log('处理实时告警:', data);
    
    // 检查是否已存在相同ID的告警
    const existingIndex = alarmList.value.findIndex(item => item.id === data.id);
    
    if (existingIndex !== -1) {
      // 如果已存在，更新告警内容
      alarmList.value[existingIndex] = {
        ...alarmList.value[existingIndex],
        ...data
      };
      console.log(`更新告警: ${data.id}`);
    } else {
      // 如果不存在，添加新告警到列表开头
      alarmList.value.unshift(data);
      console.log(`添加新告警: ${data.id}`);
    }
    
    // 限制告警数量，最多保留100条
    if (alarmList.value.length > 100) {
      alarmList.value = alarmList.value.slice(0, 100);
    }
  };

  return {
    alarmList, // 告警列表数据
    setAlarmList, // 设置告警列表（用于HTTP请求获取）
    handleRealtimeAlarm // 处理WebSocket实时告警推送
  };
}); 